package com.hua.designpattern.structural.bridge;

/**
 * 
 * @author joshua
 * 
 *         <pre>
 * 
 * 桥接（Bridge）是用于把抽象化与实现化解耦，使得二者可以独立变化。
 * 在多维度的情况下，可以实现多种组合，并将表现形式与实现分离，延迟到表现层实现。
 * 
 *
 * 优点： 1、抽象和实现的分离。 2、优秀的扩展能力。 3、实现细节对客户透明。
 * 缺点：桥接模式的引入会增加系统的理解与设计难度，由于聚合关联关系建立在抽象层，要求开发者针对抽象进行设计与编程。
 *
 *
 *
 *         </pre>
 *
 */
public class TestBridge {

	public static void main(String[] args) {
		Shape circleRed = new Circle(10, 20, 30, new DrawRed());
		circleRed.draw();

		Shape circleBlue = new Circle(10, 20, 30, new DrawBlue());
		circleBlue.draw();

		Shape rectangleRed = new Rectangle(10, 20, 30, 40, new DrawRed());
		rectangleRed.draw();

		Shape rectangleBlue = new Rectangle(10, 20, 30, 40, new DrawBlue());
		rectangleBlue.draw();

		Shape squareRed = new Square(10, 20, 30, new DrawRed());
		squareRed.draw();

		Shape squareBlue = new Square(10, 20, 30, new DrawBlue());
		squareBlue.draw();
	}

}
